// loaclStorag
// 1.通常程序员用来测试 存储客户端用户的信息对象：测试用
// 2.同一个浏览器下不同的页面都可以获取到loaclStoragd的值：数据可以共享
// 3.这些信息将永久保存到浏览器上，只能手动删除loaclStorag的值：数据永久有效，只能手动删除
//需要手动删除 或者设置过期时间，否则永久保存在浏览器上。
//参考地址  https://blog.csdn.net/weixin_43295498/article/details/114887811

//1 引入js import localStorage from '../utils/MyLocalStorage'
// (1).储存数据
// localStorage.setItem('accessToken', 'Bearer ' + response.data.result.accessToken)
// (2).取出数据
// localStorage.getItem('accessToken')
// (3).删除储存数据
// localStorage.removeItem('accessToken')
// (4).更改数据
// localStorage.setItem('accessToken', '更改后' + response.data.result.accessToken)
/* eslint-disable no-new */

export default  {
  //存储 time 封装单位秒
  set(key, value, time) {
    try {
      if (!localStorage) {
        return null;
      }
      //如果没有设置时间或者为NaN,则设置默认时间为24小时
      if (!time || isNaN(time)) {
        time = 60 * 60 *24;
      }
      //过期时间的毫秒数
      const endTime = (new Date()).getTime() + time  * 1000;
      // 将时间和值一起存储
      localStorage.setItem(key, JSON.stringify({
        data: value,
        time: endTime
      }));
    } catch (e) {
      return null;
    }
  },
  //取出数据
  get(key) {
    try {
      if (!localStorage || !localStorage.getItem(key)) {
        return null;
      }
      //获取缓存数据
      const result = JSON.parse(localStorage.getItem(key));
      //目前时间的毫秒数
      const now = (new Date()).getTime()
      //如果缓存时间过期则移除数据
      if (now > result.time) {
        this.remove(key);
        return null;
      }
      return result.data;
    } catch (e) {
      this.remove(key);
      return null;
    }
  },
  // 删除数据
  remove(key) {
    localStorage.removeItem(key);
  }
}

